Цель: знакомство с понятием нормализации базы данных. Связи между таблицами.
Программное обеспечение: Microsoft Access 2007 либо новее
На этом занятии Вы улучшите созданную на предыдущем занятии базу данных, создав для этого дополнительные таблицы и установив между ними связи.
1. В Вашей таблице «Расписание» одни и те же дисциплины повторяются несколько раз. Было бы очень хорошо перечислить все дисциплины в отдельной таблице.
2. Создайте таблицу «Дисциплины» с помощью конструктора:
3. Запишите в таблицу дисциплины, которые встречались в таблице «Расписание»:
на картинке приведен ненастоящий пример – у Вас должны быть именно те дисциплины, которые есть в расписании!)
Обратите внимание, что каждой дисциплине ставится в соответствие свой уникальный код.
4. Закройте все открытые объекты Access:
5. Мы будем изменять структуру таблицы «Расписание», и в ходе этого процесса информация из нее будет теряться. Поэтому сделаем себе копию, чтобы можно было «подсмотреть» старое содержание. Нажав правой кнопкой мыши по объектутаблице «Расписание», выберите команду «Копировать»:
6. Щелкнув правой кнопкой в той же области, выберите «Вставить»
7. В появившемся окне измените название таблицы на «Расписание_старое» и выберите режим «Структура и данные»:
8. Откройте таблицу «Расписание» (обратите внимание: не таблицу
«Расписание_старое», именно «Расписание»!) в режиме конструктора:
9. Измените тип данных поля «Название_дисциплины» на «Мастер подстановки». Укажите, что значения поля требуется получать из другой таблицы:
10. Нажмите «Далее». Список дисциплин требуется получать из таблицы «Дисциплины». Выберите ее из списка:
Нажмите «Далее».
11. Перенесите все поля из списка доступных в список отображаемых с помощью кнопки «>>»:
Нажмите «Далее».
12. Выберите сортировку по названию дисциплины:
Нажмите «Далее».
13. Укажите опцию «Скрыть ключевой столбец», увеличьте ширину имеющегося столбца:
Нажмите «Далее».
14. Теперь можем переименовать поле в «Дисциплина». Нажмите «Готово» и сохраните таблицу. При ээтом Вы получите предупреждение о потере информации (поскольку старые текстовые записи не могут помещаться в числовом поле):
15. Мы должны согласиться с требованием.
16. Если все сделано верно, то столбец «Дисциплина» в таблице «Расписание» опустел, зато теперь нужно не вводить текст целиком, а только выбирать нужный пункт из выпадающего списка:
17. Заполните пустующие «ячейки», выбрав нужные дисциплины из выпадающего списка. Если Вы не помните, какая именно дисциплина была в конкретной строке, Вы можете «подсмотреть» в таблице «Расписание_старое».
18. Если теперь потребуется добавить в расписание дисциплину, которой нет в выпадающем списке, сначала нужно добавить ее в таблицу «Дисциплины»! Затем сохранить все изменения, закрыть таблицу «Дисциплины». Новая дисциплина появится в выпадающем списке.
Задание 2. Создание таблицы «Виды_занятий»
1. Создайте в режиме конструктора таблицу «Виды_занятий»:
2. Заполните таблицу следующими данными:
3. Закройте все объекты Access:
4. Откройте таблицу «Расписание» в режиме конструктора. Измените тип поля
«Вид занятия» на «Мастер подстановки» 5. Следуйте следующим шагам:
Чтобы перенести в список выбранных полей только первое и третье, воспользуйтесь кнопкой «>» - переносит только одно поле.
Нажмите «Да»:
И еще раз «Да»:
6. Перейдите в режим редактирования таблицы и заполните содержание поля
«Вид_занятия» для всего расписания.
Задание 3. Создание таблицы «Преподаватели»
1. Закройте все открытые объекты Access.
2. Создайте талицу «Преподаватели» в режиме конструктора:
3. Сохраните таблицу, перейдите в режим редактирования таблицы. Заполните таблицу сведениями о преподавателях:
4. Закройте все открытые объекты Access.
5. Откройте таблицу «Расписание» в режиме конструктора. Измените тип поля «Преподаватель» на «Мастер подстановки». Следуйте шагам:
6. Сохраните таблицу, перейдите в режим редактирования таблицы. Заполните пустые «клетки» в расписании, выбирая преподавателей из выпадающего списка:
Итоговую базу данных прикрепите как ответ на задание.
На следующем занятии решим новые задачи:
1) должность относится не к таблице «Расписание», а к таблице «Преподаватель»
2) время начала и время окончания занятия однозначно определяются такой величиной, как номер занятия по порядку.
3) и другие.